package com.zlj.jdbc.pool;

import java.sql.Connection;
import java.sql.SQLException;

import org.apache.commons.dbcp.BasicDataSource;
import org.junit.Test;

/**
 * DBCP连接池
 * @author bashen
 *
 */
public class DBCPPoolDemo {

	@Test
	public void test() throws SQLException {
		/*
		 * 1、创建连接池对象;
		 * 2、配置四大参数;
		 * 3、配置池参数;
		 * 4、得到连接对象;
		 */
		BasicDataSource dataSource = new BasicDataSource();
		dataSource.setDriverClassName("com.mysql.jdbc.Driver");
		dataSource.setUrl("jdbc:mysql://localhost:3306/testsql");
		dataSource.setPassword("tiger");
		dataSource.setUsername("root");
		
		dataSource.setMinIdle(3);      //最小空闲时间
		dataSource.setMaxWait(5000);   //最大等待时间
		dataSource.setMaxActive(40);   //最大连接数
		
		Connection conn = dataSource.getConnection();
		Connection conn1 = new DecoratorDemo(conn);
		//System.out.println(conn.getClass().getName());
		System.out.println(conn1.getClass().getName());  //com.zlj.jdbc.pool.DecoratorDemo
		/**
		 * 连接池内部使用四大参数创建了连接对象！即mysql驱动提供的Connection
		 * 连接池使用mysql的连接对象进行了修饰，只对close()方法进行了增强！
		 * 装饰之后的Connection的close()方法,用来把当前连接归还给池！
		 */
		//conn.close();  //把连接归还给池！
		conn1.close();  //把连接归还给池！
	}
}
